home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor1
/
laminate.src
< prev
next >
Wrap
Text File
|
1991-10-19
|
6KB
|
333 lines
%%HP: T(3)A(D)F(.);
@ LAMINATE by Jay Nestle
DIR
INT1
\<<
"No. of new materials?"
"" INPUT OBJ\->
\<< \-> C
\<<
WHILE 0
'C' DECR \<=
REPEAT
MATER
END
\>>
\>> EVAL
"Change in temp?"
":\GDT:" INPUT OBJ\->
OBJ\-> DROP '\GDT' STO
"Number of Layers?"
"" INPUT OBJ\-> 1
SWAP
FOR X LAYER
NEXT
\>>
CALC
\<< 'L1' LAYERS
layerlist OBJ\-> SWAP
DUP UPDIR
'CurrentLayer' STO
SWAP 1 SWAP
FOR TC DUP
LAYERS EVAL '\Gh' RCL
'\Gh' '\Ga1' RCL '\Ga1'
'\Ga2' RCL '\Ga2' 'Mat'
@ [Note: 'MAT' renamed to 'Mat' to prevent TLLIB conflicts. -jkh-]
RCL UPDIR UPDIR
MATERIALS EVAL 'E1'
RCL 'E1' 'E2' RCL
'E2' 'v21' RCL
'v21' 'v12' RCL
'v12' 'G12' RCL
'G12' UPDIR UPDIR
Formulas STO STO
STO STO STO STO STO
STO EQ11 ERPT EQ22
ERPT EQ66 ERPT EQ12
ERPT EQ11B ERPT
EQ12B ERPT EQ22B
ERPT EQ16B ERPT
EQ26B ERPT EQ66B
ERPT E\Gaxy ERPT E\Gax
ERPT E\Gay ERPT \Gax \Gay
\Gaxy { 3 1 } \->ARRY
SWAP Q11B Q12B Q16B
Q12B Q22B Q26B Q16B
Q26B Q66B { 3 3 }
\->ARRY UPDIR
CurrentLayer LAYERS
EVAL SWAP "QB" SWAP
+ OBJ\-> STO 'M\Gaxy'
STO UPDIR UPDIR DUP
'CurrentLayer' STO
LAYERS
NEXT AMAT
BMAT DMAT ABD2M
DROP
\>>
CNT\Ga
\<< LAYERS
layerlist OBJ\-> 1
SWAP
FOR X X ROLL
DUP EVAL "QB" SWAP
+ OBJ\-> t * \GDT *
M\Gaxy * UPDIR
NEXT 1
NoLayers 1 -
FOR X +
NEXT 2 * DUP
\GDT / ABDM A INV
SWAP * 2 / '\GaLAM'
STO 'NT' STO
\>>
MATERIALS
DIR
materiallist
{ }
END
LAYERS
DIR
ABDM
DIR
END
NoLayers 0
layerlist { }
END
Formulas
DIR
E\Gaxy '\Gaxy=2*(
\Ga1-\Ga2)*COS(\Gh)*SIN(\Gh
)'
E\Gay '\Gay=\Ga2*
COS(\Gh)^2+\Ga1*SIN(\Gh)^
2'
E\Gax '\Gax=\Ga1*
COS(\Gh)^2+\Ga2*SIN(\Gh)^
2'
EQ66B 'Q66B=(
Q11+Q22-2*Q12-2*Q66
)*SIN(\Gh)^2*COS(\Gh)^2
+Q66*(SIN(\Gh)^4+COS(
\Gh)^4)'
EQ26B 'Q26B=(
Q11-Q12-2*Q66)*SIN(
\Gh)^3*COS(\Gh)+(Q12-
Q22+2*Q66)*SIN(\Gh)*
COS(\Gh)^3'
EQ16B 'Q16B=(
Q11-Q12-2*Q66)*SIN(
\Gh)*COS(\Gh)^3+(Q12-
Q22+2*Q66)*SIN(\Gh)^3
*COS(\Gh)'
EQ22B 'Q22B=
Q11*SIN(\Gh)^4+2*(Q12
+2*Q66)*SIN(\Gh)^2*
COS(\Gh)^2+Q22*COS(\Gh)
^4'
EQ12B 'Q12B=(
Q11+Q22-4*Q66)*SIN(
\Gh)^2*COS(\Gh)^2+Q12*(
SIN(\Gh)^4+COS(\Gh)^4)'
EQ11B 'Q11B=
Q11*COS(\Gh)^4+2*(Q12
+2*Q66)*SIN(\Gh)^2*
COS(\Gh)^2+Q22*SIN(\Gh)
^4'
EQ11 'Q11=E1/
(1-v12*v21)'
EQ12 'Q12=v12
*E2/(1-v12*v21)'
EQ22 'Q22=E2/
(1-v12*v21)'
EQ66 'Q66=G12
'
END
ERPT
\<< EQ\-> EVAL SWAP
STO
\>>
CLLAYERS
\<< CLLCD
"Clear all layers?"
4 DISP { " " yes
" " " " } TMENU
-1 WAIT
IF 12.1 SAME
THEN LAYERS
'layerlist' RCL
OBJ\-> 1 SWAP
FOR X EVAL
CLVAR UPDIR
NEXT
layerlist PURGE { }
'layerlist' STO 0
'NoLayers' STO
'ABDM' EVAL { ABDM
A B D } PURGE UPDIR
UPDIR
END
\>>
CLMAT
\<< CLLCD
"Clear materials?"
4 DISP { " " yes }
TMENU -1 WAIT
IF 12.1 SAME
THEN
MATERIALS
'materiallist' RCL
OBJ\-> 1 SWAP
FOR X EVAL
CLVAR UPDIR
NEXT
materiallist PURGE
{ } 'materiallist'
STO UPDIR
END
\>>
\GDT 0
ABD2M
\<< LAYERS ABDM A
{ 1 3 } RDM OBJ\->
DROP B { 1 3 } RDM
OBJ\-> DROP 1 3
FOR X 2 X 2
\->LIST A SWAP GET
NEXT 1 3
FOR X 2 X 2
\->LIST B SWAP GET
NEXT 1 3
FOR X 3 X 2
\->LIST A SWAP GET
NEXT 1 3
FOR X 3 X 2
\->LIST B SWAP GET
NEXT B { 1 3
} RDM OBJ\-> DROP D {
1 3 } RDM OBJ\-> DROP
1 3
FOR X 2 X 2
\->LIST B SWAP GET
NEXT 1 3
FOR X 2 X 2
\->LIST D SWAP GET
NEXT 1 3
FOR X 3 X 2
\->LIST B SWAP GET
NEXT 1 3
FOR X 3 X 2
\->LIST D SWAP GET
NEXT { 6 6 }
\->ARRY 'ABDM' STO
UPDIR UPDIR
\>>
DMAT
\<< LAYERS
layerlist OBJ\-> 1
SWAP
FOR X X ROLL
DUP EVAL "QB" SWAP
+ OBJ\-> t zbar SQ *
t t * t * 12 / + *
UPDIR
NEXT 1
NoLayers 1 -
FOR X +
NEXT ABDM D
STO UPDIR UPDIR
\>>
BMAT
\<< LAYERS
layerlist OBJ\-> 1
SWAP
FOR X X ROLL
DUP EVAL "QB" SWAP
+ OBJ\-> t * zbar *
UPDIR
NEXT 1
NoLayers 1 -
FOR X +
NEXT ABDM B
STO UPDIR UPDIR
\>>
AMAT
\<< LAYERS
layerlist OBJ\-> 1
SWAP
FOR X X ROLL
DUP EVAL "QB" SWAP
+ OBJ\-> t * UPDIR
NEXT 1
NoLayers 1 -
FOR X +
NEXT ABDM A
STO UPDIR UPDIR
\>>
MATER
\<<
"
Material name?"
":name:" INPUT OBJ\->
OBJ\-> DROP DUP
'CurrentMat' STO
MATERIALS DUP CRDIR
materiallist +
'materiallist' STO
UPDIR 1 5
FOR X INPT
NEXT
\>>
INPT
\<<
"Variable Name?"
":name:" { E1 E2
G12 v21 v12 } TMENU
INPUT OBJ\-> OBJ\->
DROP DUP
"Enter Value for: "
SWAP + ":value:"
INPUT OBJ\-> OBJ\->
DROP SWAP CLLCD
MATERIALS
CurrentMat STO
UPDIR UPDIR
\>>
LAYER
\<< "Layer name?"
":name:" INPUT OBJ\->
OBJ\-> DROP DUP
'CurrentLayer' STO
LAYERS DUP CRDIR
layerlist +
'layerlist' STO
layerlist OBJ\->
'NoLayers' STO
CurrentLayer
"Material?" ":Mat:"
INPUT OBJ\-> OBJ\->
DROP 'Mat' STO
@ [Note: 'MAT' renamed to 'Mat' to prevent TLLIB conflicts. -jkh-]
"Angle?" ":\Gh:"
INPUT OBJ\-> OBJ\->
OBJ\-> STO "Ztop?"
":zt:" INPUT OBJ\->
OBJ\-> OBJ\-> STO
"Zbottom?" ":zb:"
INPUT OBJ\-> OBJ\->
OBJ\-> STO zt zb -
't' STO zt t 2 / -
'zbar' STO
"\Ga1 for this layer?"
":\Ga1:" INPUT OBJ\->
OBJ\-> OBJ\-> STO
"\Ga2 for this layer?"
":\Ga2:" INPUT OBJ\->
OBJ\-> OBJ\-> STO UPDIR
UPDIR CLEAR
\>>
CurrentLayer O7
CurrentMat OP
END